<?php

/**
 * DB 프로시저 관련 추상화 클래스 
 * 
 * @package php.db.proc
 */

/**
 * Mssql 프로시저 
 * 
 * 
 * @author easylogic
 * @package php.db.proc
 */
class MssqlProc extends DBProc { 
	
	private $_statement;
	
	/**
	 * 생성자 
	 * 
	 * @param DBClient $connector
	 */
	public function __construct(DBClient $connector, $name = '', $option = array()) { 
		parent::__construct($connector, $name, $option);	
	}
	
	/**
	 * 프로시저 실행
	 * 
	 * @return bool 성공이면 true, 실패이면 false
	 */
	public function execute() {
		$conn = $this->getConnector();
	
		if ($this->_option['type'] == 'proc') {	// 프로시저 일 경우 

			// 프로시저 초기화 
			$this->_statement = $conn->prepare($this->_name); 

			$keys = array_keys($this->_bind);

			// 바인딩 
			foreach ($keys as $key) { 

				$conn->bind(
						$this->_bind[$key]['name'], 
						$this->_bind[$key]['type'], 
						$this->_bind[$key]['output'], 
						$this->_bind[$key]['length'],
						$this->_bind[$key]['value']
				);

			}

			// 프로시저 실행 
			$this->_result = $conn->execute();

			// data 만들기 위한 result 설정
			$conn->setResult($this->_result);
		
			// 프로시저 실행 결과 리턴 
			return $this->_result;
		} else {		// 구문일 경우 ,
			
			return false; 
		}
	}	
}
?>